relayd: access('/usr/sbin/relayd') == true,
apk: access('/usr/bin/apk') == true,
wifi: access('/sbin/wifi') == true,
+ ufpd: access('/usr/sbin/ufpd') == true,
vrf: access('/sys/module/vrf/refcnt') == true, // vrf.ko is loaded
netifd_vrf: false,
};
'require tools.dnsrecordhandlers as drh';
var callHostHints, callDUIDHints, callDHCPLeases, CBILeaseStatus, CBILease6Status;
-var checkUfpInstalled, callUfpList;
+var callUfpList;
callHostHints = rpc.declare({
object: 'luci-rpc',
expect: { '': {} }
});
-checkUfpInstalled = rpc.declare({
- object: 'file',
- method: 'stat',
- params: [ 'path' ]
-});
-
callUfpList = rpc.declare({
object: 'fingerprint',
method: 'fingerprint',
return view.extend({
load: function() {
return Promise.all([
- checkUfpInstalled('/usr/sbin/ufpd')
- ]).then(data => {
- var promises = [
- callHostHints(),
- callDUIDHints(),
- getDHCPPools(),
- network.getNetworks(),
- data[0].type === 'file' ? callUfpList() : null,
- uci.load('firewall')
- ]
-
- return Promise.all(promises);
- });
+ callHostHints(),
+ callDUIDHints(),
+ getDHCPPools(),
+ network.getNetworks(),
+ L.hasSystemFeature('ufpd') ? callUfpList() : null,
+ uci.load('firewall')
+ ]);
},
render: function([hosts, duids, pools, networks, macdata]) {
"read": {
"ubus": {
"luci-rpc": [ "getDHCPLeases", "getDUIDHints", "getHostHints" ],
- "fingerprint": [ "fingerprint" ],
- "file": [ "stat" ]
+ "fingerprint": [ "fingerprint" ]
},
"uci": [ "dhcp" ]
},
method: 'fingerprint',
});
-var checkUfpInstalled = rpc.declare({
- object: 'file',
- method: 'stat',
- params: [ 'path' ]
-});
-
return baseclass.extend({
title: '',
load: function() {
return Promise.all([
- checkUfpInstalled('/usr/sbin/ufpd')
- ]).then(data => {
- var promises = [
- callLuciDHCPLeases(),
- network.getHostHints(),
- data[0].type === 'file' ? callUfpList() : null,
- L.resolveDefault(uci.load('dhcp'))
- ];
-
- return Promise.all(promises);
- });
+ callLuciDHCPLeases(),
+ network.getHostHints(),
+ L.hasSystemFeature('ufpd') ? callUfpList() : null,
+ L.resolveDefault(uci.load('dhcp'))
+ ]);
},
handleCreateStaticLease: function(lease, ev) {
expect: { interface: [] }
});
-const checkUfpInstalled = rpc.declare({
- object: 'file',
- method: 'stat',
- params: [ 'path' ]
-});
-
const callUfpList = rpc.declare({
object: 'fingerprint',
method: 'fingerprint',
return view.extend({
load() {
return Promise.all([
- checkUfpInstalled('/usr/sbin/ufpd')
- ]).then(([ufpcheck]) => {
- return Promise.all([
- callNetworkInterfaceDump(),
- L.resolveDefault(fs.exec('/sbin/ip', [ '-4', 'neigh', 'show' ]), {}),
- L.resolveDefault(fs.exec('/sbin/ip', [ '-4', 'route', 'show', 'table', 'all' ]), {}),
- L.resolveDefault(fs.exec('/sbin/ip', [ '-4', 'rule', 'show' ]), {}),
- L.resolveDefault(fs.exec('/sbin/ip', [ '-6', 'neigh', 'show' ]), {}),
- L.resolveDefault(fs.exec('/sbin/ip', [ '-6', 'route', 'show', 'table', 'all' ]), {}),
- L.resolveDefault(fs.exec('/sbin/ip', [ '-6', 'rule', 'show' ]), {}),
- ufpcheck?.type === 'file' ? callUfpList() : null
- ]);
- });
+ callNetworkInterfaceDump(),
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-4', 'neigh', 'show' ]), {}),
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-4', 'route', 'show', 'table', 'all' ]), {}),
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-4', 'rule', 'show' ]), {}),
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-6', 'neigh', 'show' ]), {}),
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-6', 'route', 'show', 'table', 'all' ]), {}),
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-6', 'rule', 'show' ]), {}),
+ L.hasSystemFeature('ufpd') ? callUfpList() : null
+ ]);
},
getNetworkByDevice(networks, dev, addr, mask, v6) {
expect: { interface: [] }
});
-const checkUfpInstalled = rpc.declare({
- object: 'file',
- method: 'stat',
- params: [ 'path' ]
-});
-
const callUfpList = rpc.declare({
object: 'fingerprint',
method: 'fingerprint',
return view.extend({
load() {
return Promise.all([
- checkUfpInstalled('/usr/sbin/ufpd')
- ]).then(([ufpcheck]) => {
- return Promise.all([
- callNetworkInterfaceDump(),
- L.resolveDefault(fs.exec('/sbin/ip', [ '-4', '-j', 'neigh', 'show' ]), {}),
- L.resolveDefault(fs.exec('/sbin/ip', [ '-4', '-j', 'route', 'show', 'table', 'all' ]), {}),
- L.resolveDefault(fs.exec('/sbin/ip', [ '-4', '-j', 'rule', 'show' ]), {}),
- L.resolveDefault(fs.exec('/sbin/ip', [ '-6', '-j', 'neigh', 'show' ]), {}),
- L.resolveDefault(fs.exec('/sbin/ip', [ '-6', '-j', 'route', 'show', 'table', 'all' ]), {}),
- L.resolveDefault(fs.exec('/sbin/ip', [ '-6', '-j', 'rule', 'show' ]), {}),
- ufpcheck?.type === 'file' ? callUfpList() : null,
- ]);
- });
+ callNetworkInterfaceDump(),
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-4', '-j', 'neigh', 'show' ]), {}),
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-4', '-j', 'route', 'show', 'table', 'all' ]), {}),
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-4', '-j', 'rule', 'show' ]), {}),
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-6', '-j', 'neigh', 'show' ]), {}),
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-6', '-j', 'route', 'show', 'table', 'all' ]), {}),
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-6', '-j', 'rule', 'show' ]), {}),
+ L.hasSystemFeature('ufpd') ? callUfpList() : null,
+ ]);
},
getNetworkByDevice(networks, dev, addr, mask, v6) {
"read": {
"ubus": {
"luci-rpc": [ "getDHCPLeases" ],
- "fingerprint": [ "fingerprint" ],
- "file": [ "stat" ]
+ "fingerprint": [ "fingerprint" ]
}
}
},
"/sbin/ip -[46] rule show": [ "exec" ]
},
"ubus": {
- "file": [ "exec", "stat" ],
+ "file": [ "exec" ],
"fingerprint": [ "fingerprint" ]
}
}
"/sbin/ip -[46] -j rule show": [ "exec" ]
},
"ubus": {
- "file": [ "exec", "stat" ],
+ "file": [ "exec" ],
"fingerprint": [ "fingerprint" ]
}
}